1. Technical Field
This application relates to data storage and, in particular, to preparing snapshots of data.
2. Related Art
Point-in-time snapshots of data stored in storage systems may be needed for various reasons, such as guaranteeing data integrity and recovering from data loss. The snapshots may be initiated by a human, by a software application, or both. Traditional approaches for performing snapshots commonly use multiple machines connected through a storage network. A host machine serves host data and a remote machine serves a snapshot of the host data. The snapshot is created by copying the host data over the storage network from the host machine to the remote machine.
In traditional approaches, a software application ceases write activity, flushes memory contents onto disk, and then transfers an image of the host data from the host storage machine to the remote machine. This image of the host data provides a time-specific snapshot for archival or disaster recovery purposes.
However, traditional approaches may become cumbersome to end-users of software applications that use the storage media being duplicated. For example, performing a snapshot may slow or halt applications during the snapshot process. Also, the performance of the software applications may be slow enough that the software applications fail to meet desired service levels. Moreover, traditional approaches may require bringing applications off-line for extended periods, resulting in service delays for any service hosted on a snapshot source storage medium. Additionally, traditional approaches may move data relatively slowly across the storage network from one storage device to another. Creating the snapshot may require a considerable amount of time, during which the software applications may not be able to write or read data without significant delay. Even when employing traditional snapshot methods that are considered relatively fast, creating the snapshot may still degrade storage performance enough to cause noticeable application delays. The larger the data, the more time the transfer of data across the storage network may take. Also, the larger the data, the longer applications may delay processing when a storage system suspends writes in order to guarantee snapshot data integrity. Therefore, there exists a need for snapshots operating at the fastest possible speeds.